﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CuaHangMayTinh.BusinessEntities;
using CuaHangMayTinh.BusinessLogicLayer;
using CuaHangMayTinh.Utilities;

namespace CuaHangMayTinh.PresentationLayer
{
    /// <summary>
    /// form hiển thị thông tin thêm, xóa, sửa loại mặt hàng
    /// </summary>
    public partial class FormLoaiMatHang : Form,IFormTV<LoaiMatHangEntity>,IFormThemTV<LoaiMatHangEntity>
    {
        /// <summary>
        /// chứa nội dung text lỗi
        /// </summary>
        private string Text = string.Empty;

        /// <summary>
        /// tables chua danh sach entity
        /// </summary>
        public DataTable Table { get; set; }
        /// <summary>
        /// kiểm tra xem phải thêm  hay không
        /// </summary>
        private bool Them = true;

        /// <summary>
        /// danh sách loại mặt hàng
        /// </summary>
        private List<LoaiMatHangEntity> loaiMatHangEntities;

        /// <summary>
        /// phương thức khởi tại loại form loại mặt hàng
        /// </summary>
        public FormLoaiMatHang()
        {
            InitializeComponent();
            IsEnable(false);
            splitContainer1.SplitterDistance = 0;
            loaiMatHangEntities = new List<LoaiMatHangEntity>();
            LoadListView();
        }

        public FormLoaiMatHang(bool[] so)
            : this()
        {
            if (so[0])
            {

            }
            if (so[1])
            {
                toolStripBtn_Them.Enabled = true;
                themToolStripMenuItem.Enabled = true;
            }
            if (so[2])
            {
                toolStripBtn_Xoa.Enabled = true;
                xoaToolStripMenuItem.Enabled = true;
            }
            if (so[3])
            {
                toolStripBtn_Sua.Enabled = true;
                suaToolStripMenuItem.Enabled = true;
            }
        }

        /// <summary>
        /// bắt sự kiện khi click vào datagrid
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridViewX_Select_Click(object sender, EventArgs e)
        {
            splitContainer1.SplitterDistance = 0;
        }

        /// <summary>
        /// bắt sự kiện click nút thêm mới
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_themmoi_click(object sender, EventArgs e)
        {
            if (CheckInput())
            {
                if (Them)
                {
                    if (LoaiMatHangManager.InsertGetID(new LoaiMatHangEntity(txt_Ten.Text, txt_GhiChu.Text, checkbox_hienthi.Checked), ref Text) > 0)
                    {
                        MessageBox.Show("Thêm thành công!");
                        splitContainer1.SplitterDistance = 0;
                        LoadListView();
                    }
                    else
                    {
                        MessageBox.Show(Text);
                    }
                }
                else
                {
                    var row = dataGridViewX_Select.SelectedRows[0];
                    if (LoaiMatHangManager.UpDate(new LoaiMatHangEntity((int)row.Cells[0].Value, txt_Ten.Text, txt_GhiChu.Text, checkbox_hienthi.Checked), ref Text))
                    {
                        MessageBox.Show("Cập nhật thành công !");
                        LoadListView();
                    }
                    else
                    {
                        MessageBox.Show(Text);
                    }
                }
            }
        }

        /// <summary>
        /// sự kiện click của nút thêm
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_them_click(object sender, EventArgs e)
        {
            splitContainer1.SplitterDistance = 100;
            IsEnable(true);
            btn_Ok.Text = "Thêm";
            Them = true;
        }

        /// <summary>
        /// bắt sự kiện click của nút xóa
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_xoa_click(object sender, EventArgs e)
        {
            if (dataGridViewX_Select.SelectedRows.Count > 0)
            {
                int i = 0;
                var c = MessageBox.Show("Bạn muốn xóa hay không", "Thông báo", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Warning);
                if (c == DialogResult.Yes)
                {
                    foreach (DataGridViewRow row in dataGridViewX_Select.SelectedRows)
                    {
                        if (LoaiMatHangManager.Delete((int)row.Cells[0].Value,ref Text))
                        {
                            i++;
                        }
                        else
                        {
                            MessageBox.Show(Text);
                        }
                    }
                    MessageBox.Show("Xóa thành công " + i + " loại mặt hàng !");
                    LoadListView();
                }
            }
        }

        /// <summary>
        /// bắt sự kiện click của nút sửa
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_sua_click(object sender, EventArgs e)
        {
            if (dataGridViewX_Select.SelectedRows.Count > 0)
            {
                splitContainer1.SplitterDistance = 100;
                IsEnable(true);
                btn_Ok.Text = "Cập nhật";
                Them = false;
                var row = dataGridViewX_Select.SelectedRows[0];
                txt_Ten.Text = (string) row.Cells[1].Value;
                txt_GhiChu.Text = (string) row.Cells[2].Value;
                checkbox_hienthi.Checked = (bool) row.Cells[3].Value;
            }
        }

        /// <summary>
        /// bắt sự kiên click của nút tìm kiếm nhưng trên form nay không có nên không làm gì cả
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_timkiem_click(object sender, EventArgs e)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// bắt sự kiện click của nút xóa trắng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void btn_xoatrang_click(object sender, EventArgs e)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// lấy entity từ form xuôngs
        /// </summary>
        /// <returns></returns>
        public LoaiMatHangEntity GetEntity()
        {
            LoaiMatHangEntity entity = new LoaiMatHangEntity();
            entity.TenLoaiMH = txt_Ten.Text;
            entity.GhiChu = txt_GhiChu.Text;
            entity.TinhTrang = checkbox_hienthi.Checked;
            return entity;
        }

        /// <summary>
        /// load lên datagirview bằng findall
        /// </summary>
        public void LoadListView()
        {
            dataGridViewX_Select.DataSource = DataUtil.ChangeColumn(LoaiMatHangManager.Find_All());
            if (dataGridViewX_Select.Columns.Count > 0)
            {
                dataGridViewX_Select.Columns[0].Visible = false;
            }
        }

        /// <summary>
        /// get datatable lên datagird
        /// </summary>
        /// <param name="dt"></param>
        public void LoadListView(DataTable dt)
        {
            dataGridViewX_Select.DataSource = dt;
            if (dataGridViewX_Select.Columns.Count > 0)
            {
                dataGridViewX_Select.Columns[0].Visible = false;
            }
        }

        /// <summary>
        /// gán entity lên form nhưng ở đây không cần nên không làm gì cả
        /// </summary>
        /// <param name="entity"></param>
        public void SetEntity(LoaiMatHangEntity entity)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// xóa trắng trên from
        /// </summary>
        public void XoaTrang()
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// kiểm tra thông tin nhập
        /// </summary>
        /// <returns>đúng hết trả về 0</returns>
        public bool CheckInput()
        {
            if (StringHelper.IsNullorEmpty(txt_Ten.Text))
            {
                MessageBox.Show("Bạn chưa nhập tên vào !");
                return false;
            }
            return true;
        }

        /// <summary>
        /// hiển thị input cho người dùng
        /// </summary>
        /// <param name="i"></param>
        private void IsEnable(bool i)
        {
            this.txt_Ten.Enabled = i;
            this.checkbox_hienthi.Enabled = i;
            this.txt_GhiChu.Enabled = i;
        }

        /// <summary>
        /// thêm của menustrip
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void themToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btn_them_click(sender, e);
        }

        /// <summary>
        /// xóa của menustrip
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void xoaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btn_xoa_click(sender, e);
        }

        /// <summary>
        /// sửa của menustrip
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void suaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btn_sua_click(sender, e);
        }
    }
}
